Skip to content

docs(adr): reconcile zsh-lint analyzer architecture#456

Merged
ss-o merged 5 commits into
mainfrom
feature-455
Jul 25, 2026
Merged

docs(adr): reconcile zsh-lint analyzer architecture#456
ss-o merged 5 commits into
mainfrom
feature-455

Conversation

@ss-o

@ss-o ss-o commented Jul 18, 2026

Copy link
Copy Markdown
Member

Summary

  • reconcile ADR 0011 with the analyzer shipped by z-shell/zsh-lint
  • document conditional scope indexing, rule evaluation, and suppression/finalization as the three durable phases
  • align the rule/context interfaces and link the owning repository's stable contracts
  • record the maintainer's disposition once received: ACCEPTED (see "Maintainer disposition" below)

Why

ADR 0011 had drifted from the shipped Go analyzer: it described unconditional indexing, stale interfaces, unsupported accuracy claims, and an unmeasured performance claim. This documentation-only change records the implemented architectural boundary without changing analyzer behavior or copying transient implementation inventory.

Tracks #455 and ZSH-23.

Maintainer disposition (2026-07-25)

Decider ss-o, replying to the decision packet in #455 comment 5013562757 with:

11A / T1 / D1
  • 11A: retain the opt-in ScopeAwareRule extension point as shipped; no content change needed beyond acceptance.
  • T1: renamed the heading to "zsh-lint Conditional Semantic Analysis Pipeline"; filename kept stable (0011-zsh-lint-semantic-analyzer-architecture.md) to avoid link churn.
  • D1: revised in place and accepted, rather than superseded.

Status is now ACCEPTED, Deciders ss-o, dated 2026-07-25. This resolves the "Maintainer decision requested" section below and supersedes the original "keep the decision PROPOSED" line in Summary above.

Maintainer decision requested

Please decide whether to retain the optional scope-index extension point and whether to accept, amend, supersede, or reject the reconciled ADR. Acceptance still requires a named decider and date.

Verification

First pass (initial reconciliation commit):

  • focused Trunk markdownlint: Checked 1 file, No issues
  • git diff --check 8ee04162..71286af3
  • all referenced zsh-lint source/contract paths resolved at audited commit e714dc3e
  • independent review: specification compliance approved; document quality approved

Second pass (Copilot review responses and the 2026-07-25 disposition commit):

  • fixed a wrong Go import path (mvdan/sh/syntax -> mvdan.cc/sh/v3/syntax), verified against zsh-lint's go.mod
  • clarified that ScopeAwareRule composes with Rule rather than replacing it
  • Trunk check after each commit: no issues
  • live CI (CodeQL, Validate Agent Instructions, Lychee, Labels Sync Tests): green on the disposition commit

@ss-o
ss-o marked this pull request as ready for review July 24, 2026 22:10
@ss-o
ss-o requested a review from a team as a code owner July 24, 2026 22:10
Copilot AI review requested due to automatic review settings July 24, 2026 22:10

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR reconciles ADR 0011 (“zsh-lint Semantic Analyzer Architecture”) with the analyzer architecture currently shipped in z-shell/zsh-lint, updating the decision text to reflect the implemented conditional indexing + evaluation + suppression/finalization pipeline while keeping the ADR in PROPOSED status.

Changes:

  • Rewrites the ADR’s context/decision to describe the conditional scope-index pass, rule evaluation, and suppression/finalization as three durable phases.
  • Updates the documented rule/context interfaces and emphasizes external “product contracts” (IDs, suppression, output) via links rather than duplicating details.
  • Replaces outdated consequences/alternatives claims (unconditional two-pass, accuracy/perf assertions) with bounded costs/limits and clearer alternatives.

Comment thread decisions/0011-zsh-lint-semantic-analyzer-architecture.md Outdated
Copilot review: the interface pairing implied a scope-aware rule must
also implement Rule but never said so, leaving room to misread
ScopeAwareRule as independently registrable.
Copilot AI review requested due to automatic review settings July 24, 2026 23:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread decisions/0011-zsh-lint-semantic-analyzer-architecture.md
Copilot review: the shipped module is mvdan.cc/sh/v3, so the syntax
package's canonical import path is mvdan.cc/sh/v3/syntax, not
mvdan/sh/syntax. Verified against zsh-lint's go.mod.
Copilot AI review requested due to automatic review settings July 24, 2026 23:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated no new comments.

Per the decision packet in #455 (comment 5013562757), decider ss-o,
2026-07-25: 11A (retain the opt-in ScopeAwareRule extension point as
shipped, no content change needed) / T1 (rename the heading to
'zsh-lint Conditional Semantic Analysis Pipeline', filename kept
stable to avoid link churn) / D1 (revise in place and accept rather
than supersede). Removed the now-resolved 'Decision review' section
and added the Deciders field this ADR's template was missing.
Copilot AI review requested due to automatic review settings July 25, 2026 00:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

Comment thread decisions/0011-zsh-lint-semantic-analyzer-architecture.md
@ss-o
ss-o merged commit f4df913 into main Jul 25, 2026
7 checks passed
@ss-o
ss-o deleted the feature-455 branch July 25, 2026 01:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants